package plgbasev0

import (
	"dgo/plg/plgbase"
)

/**

设计思路:
  1. 初步思路 2020-11-20 09:00:15

数据入口:
  订阅
  写入

数据出口:
  订阅中心分发:
  listener分发:


数据源->加密->输出


数据生产者:
  数据源
  RSA加密

数据消费者:
  RAS加密
  数据输出



数据生产者:
  可以设置一名消费者, 直接调用消费者函数进行消费
  可以设置一个订阅中心, 进行数据分发

数据消费者:
  实现一个函数, 提供数据输入
  设置一个订阅中心, 进行消息订阅

*/

// type ConsumeFunc func(sender interface{}, data interface{}, tag interface{})
type ActionEventFunc = plgbase.ActionEventFunc

///**
//  生产者实现接口, 设置消费函数
//*/
//type IProduce_SetConsumeFunc interface {
//	SetConsumeFunc(val ConsumeFunc)
//}

/*
*

	生产者实现接口, 设置消费分发中心, 进行数据分发
*/
type IProduce_SetConsumeSubscriber = plgbase.IProduce_SetConsumeSubscriber

/*
消费者, 提供一个消费函数
*/
type IConsume_Func = plgbase.IConsume_Func

type IActionEventSetter = plgbase.IActionEventSetter

func TrySetActionEvent(obj interface{}, fn ActionEventFunc) bool {
	if intf, ok := obj.(IActionEventSetter); ok {
		intf.SetActionEvent(fn)
		return true
	}
	return false
}

const (
	STATUS_ACTION int = 1000
)

type IPlugUtils = plgbase.IPlugUtils

type IPlugGetStatus = plgbase.IPlugGetStatus

type IPlugGetVal = plgbase.IPlugGetVal

/*
消费者, 设置一个订阅中心, 进行消息订阅
*/
type IConsume_SetProduceSubscriber = plgbase.IConsume_SetProduceSubscriber
